package br.com.djiadreams.telas;

import java.text.SimpleDateFormat;
import java.util.Date;


import br.com.djiadreams.basededados.Infos;
import br.com.djiadreams.basededados.InfosDAO;
import br.com.djiadreams.extras.FabricaDeCores;
import br.com.djiadreams.funcoes.GerenciadorDeFuncoes;
import br.com.djiadreams.funcoes.IGerenciador;
import br.com.djiadreams.georeferencedsignalproject.MapActivity;
import br.com.djiadreams.georeferencedsignalproject.R;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.view.Menu;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class TelaPrincipal extends Activity {

	private SharedPreferences preferencias;
	private IGerenciador gerenciador;
	private InfosDAO db;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		preferencias = getSharedPreferences("login_preferencias", MODE_PRIVATE);
		gerenciador = new GerenciadorDeFuncoes(this);
		db = new InfosDAO(this);
		db.open();
		setContentView(R.layout.activity_tela_principal);
	}

	@Override
	protected void onStart() {
		// TODO Auto-generated method stub
		super.onStart();
		// atualizar(null);
	}

	private void atualizaInterface() {
		// TODO Auto-generated method stub

		TextView operadora = (TextView) findViewById(R.id.operadora);
		TextView qualidade = (TextView) findViewById(R.id.qualidade);
		TextView localizacao = (TextView) findViewById(R.id.localizacao);
		TextView bateria = (TextView) findViewById(R.id.bateria);
		gerenciador.atualizar();
		Infos aux = new Infos(gerenciador.getOperadora(),
				gerenciador.getSinal(), gerenciador.getLatitude(),
				gerenciador.getLongitude());
		operadora.setText(aux.getOperadora());
		atualizaQualidade(qualidade, aux);
		localizacao.setText(aux.getLatitude() + " " + aux.getLongitude());
		bateria.setText(gerenciador.getBateria() + "%");

		gerenciador.encerrarAtualizacao();

	}

	private void atualizaQualidade(TextView qualidade, Infos info) {
		// TODO Auto-generated method stub
		String q = info.getQualidade();
		qualidade.setText(q);
		qualidade.setTextColor(FabricaDeCores.geraCor(q));
		ImageView imagem = (ImageView) findViewById(R.id.img_qualidade);
		imagem.setBackgroundResource(FabricaDeCores.geraDrawable(q));
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.tela_principal, menu);
		return true;
	}

	@Override
	public void onBackPressed() {
		// TODO Auto-generated method stub
		setResult(RESULT_OK);
		super.onBackPressed();
	}

	@SuppressLint("SimpleDateFormat")
	public static String horarioAtual() {
		String resp;
		Date data = new Date();
		// formato da data
		SimpleDateFormat formatadorBrasil = new SimpleDateFormat(
				"dd-MM-yyyy \n HH:mm:ss");
		resp = formatadorBrasil.format(data);
		return resp;
	}

	public void atualizar(View v) {
		gerenciador.atualizar();
		insereDB();
		atualizaInterface();
		TextView data = (TextView) findViewById(R.id.data_atualizar);
		String horario = TelaPrincipal.horarioAtual();
		data.setText(horario);
		Editor editor = preferencias.edit();
		editor.putString("ultima_data", horario);
		editor.commit();
		gerenciador.encerrarAtualizacao();
	}

	private void insereDB() {
		// TODO Auto-generated method stub
		Infos info = new Infos();
		info.setOperadora(gerenciador.getOperadora());
		info.setSinal(gerenciador.getSinal());
		info.setLatitude(gerenciador.getLatitude());
		info.setLongitude(gerenciador.getLongitude());
		if (info.getLatitude() != 0 || info.getLongitude() != 0) {
			if (db.inserir(info) == -1) {
				Toast.makeText(this, "N�o inseriu", Toast.LENGTH_LONG).show();
			} else {
				Toast.makeText(this, "Inseriu", Toast.LENGTH_LONG).show();
			}
		}
	}

	public void irParaMapa(View v) {
		if (gerenciador.getLatitude() == 0) {
			Toast.makeText(this, "Atualize sua posi��o primeiro...",
					Toast.LENGTH_LONG).show();
		} else {
			Intent intentMapa = new Intent(this, MapActivity.class);

			Infos aux = new Infos(gerenciador.getOperadora(),
					gerenciador.getSinal(), gerenciador.getLatitude(),
					gerenciador.getLongitude());
			intentMapa.putExtra("lat", aux.getLatitude());
			intentMapa.putExtra("long", aux.getLongitude());
			intentMapa.putExtra("qualidade", aux.getQualidade());
			intentMapa.putExtra("operadora", aux.getOperadora());
			startActivity(intentMapa);
		}
	}

	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		db.close();
		super.onDestroy();
	}
}
